package ar.com.gals.model;

import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.NotEmpty;

import ar.com.gals.domain.TipoObservacion;
import ar.com.gals.domain.UnidadMedida;
import ar.com.gals.error.GalsException;
import ar.com.gals.service.TipoObservacionService;

public class TipoObservacionModel {

	@NotEmpty(message="{MSG_REQUIRED}")
	private String nombre;
	
	private String descripcion;
	
	@NotNull(message="{MSG_REQUIRED}")
	private UnidadMedida unidadMedida;

	
	public TipoObservacionModel() {}

	public TipoObservacionModel(int tipoObservacionId) throws GalsException {
		TipoObservacion tipoObservacion = new TipoObservacionService().getById(tipoObservacionId);
		this.setNombre(tipoObservacion.getNombre());
		this.setDescripcion(tipoObservacion.getDescripcion());
		this.setUnidadMedida(tipoObservacion.getUnidadMedida());
	}
	

	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getDescripcion() {
		return descripcion;
	}
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	public UnidadMedida getUnidadMedida() {
		return unidadMedida;
	}
	public void setUnidadMedida(UnidadMedida unidadMedida) {
		this.unidadMedida = unidadMedida;
	}
	
	
	public void crearTipoObservacion() throws GalsException {
		
		TipoObservacionService service = new TipoObservacionService();
		
		TipoObservacion tipoObservacion = new TipoObservacion();
		tipoObservacion.setNombre(this.getNombre());
		tipoObservacion.setDescripcion(this.getDescripcion());
		tipoObservacion.setUnidadMedida(this.getUnidadMedida());
		tipoObservacion.setTipoDato(this.getUnidadMedida().getTipoDato());
		
		service.create(tipoObservacion);
	}

	
	public void modificarTipoObservacion(int tipoObservacionId) throws GalsException {

		TipoObservacionService service = new TipoObservacionService();
		
		TipoObservacion tipoObservacion = service.getById(tipoObservacionId);
		tipoObservacion.setNombre(this.getNombre());
		tipoObservacion.setDescripcion(this.getDescripcion());
		tipoObservacion.setUnidadMedida(this.getUnidadMedida());
		tipoObservacion.setTipoDato(this.getUnidadMedida().getTipoDato());
			
		service.update(tipoObservacion);
	}
	

	public void eliminarTipoObservacion(int tipoObservacionId) throws GalsException {

		TipoObservacionService service = new TipoObservacionService();
		
		TipoObservacion tipoObservacion = service.getById(tipoObservacionId);
			
		service.delete(tipoObservacion);
	}
}
